<?php
namespace app\index\model;

class Defend{
    //
    public static function instance(){
        return new Defend();
    }
    /**
     * 是否访问黑名单IP
     * @param string $ip
     * @return array
     */
    public function isBlockIp($ip){
        $row = db('block_visit_ip')->where('ip', '=', $ip)->find();
        return $row;
    }
    /**
     * 是否为被屏蔽的客户端
     * @param string $user_agent
     * @param array $tname 
     * @return boolean
     */
    public function isDenyUA($user_agent, $tname){
        return false;
    }
    /**
     * 是否为屏蔽的地区
     * @param array $location
     * @param array $area
     * @return boolean
     */
    public function isArea($location, $area){
        if($location['country'] != '中国'){//屏蔽国外访问,本地局域网,保留地址
            return true;
        }elseif($location['region'] == ''){
            return true;
        }
        foreach($location as $name){
            if(in_array($name, $area)){
                return true;
            }
        }
        return false;
    }
    /**
     * 是否为被屏蔽的运营商
     * @param type $isp
     * @return boolean
     */
    public function isNet($isp){
        $ispStr = config('app.net_deny_isp');
        if(strpos($ispStr, $isp) === false){
            return false;
        }
        return true;
    }
    /**
     * 客户端关键字屏蔽
     * @param type $agent
     * @return boolean
     */
    public function inKeyword($agent){
        if(!$agent){
            return false;
        }
        $kwStr = config('user_agent_deny_keyword');
        $kwArr = explode('|', $kwStr);
        foreach($kwArr as $keyword){
            $keyword = trim($keyword);
            if($keyword == ''){
                continue;
            }
            if(strpos($agent, $keyword) !== false){
                return true;
            }
        }
        return false;
    }

    /**
     * 是否为移动端
     * @param type $agent
     * @return boolean
     */
    public function isMobile($agent = ''){
        if(request()->isMobile()){
            return true;
        }
        return false;
    }
}